草庐IT

Java HotSpot 枚举开销

全部标签

自定义数据类型(结构体、枚举)

各位朋友,大家好。欢迎大家来到我的博客,我今天将要为大家分享的是自定义数据类型中的结构体和位段方面的知识。那么,话不多说,接下来就来看看我的分享吧。目录什么是结构体呢?结构体的自引用计算结构体的大小(对齐数)位段 什么是位段 枚举枚举的优点总结什么是结构体呢?我们都知道数组,我们可以在数组中存放相同数据类型的数据,比如说整型数组里存放的都是整形,字符数组里存放的都是字符,但是,当我们想要存放不同数据类型的时候,比如说一个学生的姓名,年龄,性别,电话号码,我们该怎么做呢?这时候就体现到自定义数据类型:结构体的作用了。我们可以在结构体中存放我们想要存放的数据类型,这就极大的方便了我们的日常使用。那

java - 将字符串与枚举值进行比较的正确方法是什么?

家庭作业:剪刀石头布游戏。我创建了一个枚举:enumGesture{ROCK,PAPER,SCISSORS};我想从中比较值来决定谁获胜——计算机或人类。设置值工作得很好,并且比较工作正常(纸盖住石头,石头压碎剪刀,剪刀Papercut)。但是,我不能让我的领带工作。只要出现平局,用户就会被宣布为获胜者。啊……废话……这将澄清:userPick是一个String值rock,paper,或剪刀。我无法使用==将userPick与computerPick进行比较,如下所示,它被转换为类型来self的enum的手势。if(computer==1)computerPick=Gesture.RO

java - 将字符串与枚举值进行比较的正确方法是什么?

家庭作业:剪刀石头布游戏。我创建了一个枚举:enumGesture{ROCK,PAPER,SCISSORS};我想从中比较值来决定谁获胜——计算机或人类。设置值工作得很好,并且比较工作正常(纸盖住石头,石头压碎剪刀,剪刀Papercut)。但是,我不能让我的领带工作。只要出现平局,用户就会被宣布为获胜者。啊……废话……这将澄清:userPick是一个String值rock,paper,或剪刀。我无法使用==将userPick与computerPick进行比较,如下所示,它被转换为类型来self的enum的手势。if(computer==1)computerPick=Gesture.RO

java - 为什么枚举上的开关需要默认值?

通常,switch语句中不需要default。但是,在以下情况下,只有当我取消注释默认语句时,代码才能成功编译。谁能解释一下为什么?publicenumXYZ{A,B};publicstaticStringtestSwitch(XYZxyz){switch(xyz){caseA:return"A";caseB://default:return"B";}} 最佳答案 你必须取消注释default的原因是你的函数说它返回一个String,但如果你只有case为A和B定义的标签,那么如果您传入任何其他内容,该函数将不会返回值。Java要求

java - 为什么枚举上的开关需要默认值?

通常,switch语句中不需要default。但是,在以下情况下,只有当我取消注释默认语句时,代码才能成功编译。谁能解释一下为什么?publicenumXYZ{A,B};publicstaticStringtestSwitch(XYZxyz){switch(xyz){caseA:return"A";caseB://default:return"B";}} 最佳答案 你必须取消注释default的原因是你的函数说它返回一个String,但如果你只有case为A和B定义的标签,那么如果您传入任何其他内容,该函数将不会返回值。Java要求

java - 如何在 Scala 中向枚举添加方法?

在Java中你可以:publicenumEnum{ONE{publicStringmethod(){return"1";}},TWO{publicStringmethod(){return"2";}},THREE{publicStringmethod(){return"3";}};publicabstractStringmethod();}你如何在Scala中做到这一点?编辑/有用的链接:https://github.com/rbricks/itemizedhttp://pedrorijo.com/blog/scala-enums/ 最佳答案

java - 如何在 Scala 中向枚举添加方法?

在Java中你可以:publicenumEnum{ONE{publicStringmethod(){return"1";}},TWO{publicStringmethod(){return"2";}},THREE{publicStringmethod(){return"3";}};publicabstractStringmethod();}你如何在Scala中做到这一点?编辑/有用的链接:https://github.com/rbricks/itemizedhttp://pedrorijo.com/blog/scala-enums/ 最佳答案

java - 为什么 Java 不允许在枚举中覆盖 equals(Object)?

我注意到以下代码段...@Overridepublicbooleanequals(ObjectotherObject){...}...不允许用于枚举,因为方法equals(Objectx)在Enum中被定义为final.为什么会这样?我想不出任何需要为Enum覆盖equals(Object)的用例。我只是想知道这种行为背后的原因。 最佳答案 除了returnthis==other之外的任何东西都会违反直觉并违反theprincipleofleastastonishment.当且仅当它们是同一个对象并且覆盖此行为的能力容易出错时,两个

java - 为什么 Java 不允许在枚举中覆盖 equals(Object)?

我注意到以下代码段...@Overridepublicbooleanequals(ObjectotherObject){...}...不允许用于枚举,因为方法equals(Objectx)在Enum中被定义为final.为什么会这样?我想不出任何需要为Enum覆盖equals(Object)的用例。我只是想知道这种行为背后的原因。 最佳答案 除了returnthis==other之外的任何东西都会违反直觉并违反theprincipleofleastastonishment.当且仅当它们是同一个对象并且覆盖此行为的能力容易出错时,两个

java - 枚举和android注解intDef

我有一个枚举:publicenumAppEnums{SERVICE_ERROR,CONNECTION_ERROR;}我想在AndroidAnnotation的intDef中使用它:@IntDef({AppEnums.CONNECTION_ERROR,AppEnums.SERVICE_ERROR})public@interfaceServiceErrors{}错误显示:incompatibletypesfound,required:'long'我能用这种不兼容性做些什么?我不想手动处理AppEnum参数的值,Enum通常会自动创建值。AppEnums.CONNECTION_ERROR.o